package br.com.quiz.bean;

import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.hibernate.HibernateException;

import br.com.quiz.dao.AbstractDAO;

import br.com.quiz.dao.UnidadedeEnsinoDAO;

import br.com.quiz.domain.UnidadedeEnsino;
import br.com.quiz.util.JSFUtil;

@ManagedBean(name = "UnidadedeEnsinoMB")
@ViewScoped
public class UnidadedeEnsinoMB {

	private ArrayList<UnidadedeEnsino> unidades;
	private ArrayList<UnidadedeEnsino> unidadeFiltrados;
	private UnidadedeEnsino unidadedeEnsino;

	public ArrayList<UnidadedeEnsino> getUnidades() {
		return unidades;
	}

	public void setUnidades(ArrayList<UnidadedeEnsino> unidades) {
		this.unidades = unidades;
	}

	public ArrayList<UnidadedeEnsino> getUnidadeFiltrados() {
		return unidadeFiltrados;
	}

	public void setUnidadeFiltrados(ArrayList<UnidadedeEnsino> unidadeFiltrados) {
		this.unidadeFiltrados = unidadeFiltrados;
	}

	public UnidadedeEnsino getUnidadedeEnsino() {
		return unidadedeEnsino;
	}

	public void setUnidadedeEnsino(UnidadedeEnsino unidadedeEnsino) {
		this.unidadedeEnsino = unidadedeEnsino;
	}

	@PostConstruct
	public void prepararPesquisa() {

		try {
			unidades = (ArrayList<UnidadedeEnsino>) UnidadedeEnsinoDAO.listar();
		} catch (Exception e) {
			e.printStackTrace();
			JSFUtil.adicionarMensagemErro(e.getMessage());
		}

	}

	public void prepararNovo() {
		unidadedeEnsino = new UnidadedeEnsino();
	}

	public void novo() {
		try {
			AbstractDAO.salvarOuEditar(unidadedeEnsino);
			unidades = (ArrayList<UnidadedeEnsino>) UnidadedeEnsinoDAO.listar();
			JSFUtil.adicionarMensagemSucesso("Unidade de ensino salva com Sucesso");
		} catch (HibernateException e) {
			JSFUtil.adicionarMensagemErro(e.getMessage());
		}
	}

	public void excluir() {
		try {
			AbstractDAO.apagar(unidadedeEnsino);
			unidades = (ArrayList<UnidadedeEnsino>) UnidadedeEnsinoDAO.listar();
			JSFUtil.adicionarMensagemSucesso("Unidade de ensino Removida com Sucesso");
		} catch (HibernateException e) {
			JSFUtil.adicionarMensagemErro(e.getMessage());

		}
	}

	public void editar() {
		try {
			AbstractDAO.salvarOuEditar(unidadedeEnsino);
			JSFUtil.adicionarMensagemSucesso("Unidade de ensino editada com Sucesso");
		} catch (HibernateException e) {
			JSFUtil.adicionarMensagemErro(e.getMessage());
		}
	}

}
